Linked list 是一種常見的資料結構,用 node 來記錄、表示、儲存資料,並利用每個 node 中的 pointer 指向下一個 node,藉此將多個node串連起來,形成Linked list,並以NULL來代表Linked list的終點。
linked list 中,有一題時常出現:找出中間數值。
這題可以註冊兩個指標,並將各速度設為 2:1
隨著元素的進行,當快指標走到結束時,慢指標恰好為中間值
class Solution {
public:
ListNode* middleNode(ListNode* head) {
struct ListNode *slow_ptr = head;
struct ListNode *fast_ptr = head;
while (head != NULL && (fast_ptr != NULL && fast_ptr->next != NULL))
{
fast_ptr = fast_ptr->next->next;
slow_ptr = slow_ptr->next;
}
return slow_ptr;
}
};